module ConstantData(
    input  wire clk,rst_n, 
    input  wire [ 6:0] Addr_twiddle0,Addr_twiddle1,Addr_twiddle2,Addr_twiddle3,
    output reg  [11:0] out0,out1,out2,out3
);
    reg [11:0] mem[0:127];

    always@(posedge clk or negedge rst_n)
    begin
        if(!rst_n) 
        begin
            mem[0] <= 12'd1;
            mem[1] <= 12'd17;
            mem[2] <= 12'd289;
            mem[3] <= 12'd1584;
            mem[4] <= 12'd296;
            mem[5] <= 12'd1703;
            mem[6] <= 12'd2319;
            mem[7] <= 12'd2804;
            mem[8] <= 12'd1062;
            mem[9] <= 12'd1409;
            mem[10] <= 12'd650;
            mem[11] <= 12'd1063;
            mem[12] <= 12'd1426;
            mem[13] <= 12'd939;
            mem[14] <= 12'd2647;
            mem[15] <= 12'd1722;
            mem[16] <= 12'd2642;
            mem[17] <= 12'd1637;
            mem[18] <= 12'd1197;
            mem[19] <= 12'd375;
            mem[20] <= 12'd3046;
            mem[21] <= 12'd1847;
            mem[22] <= 12'd1438;
            mem[23] <= 12'd1143;
            mem[24] <= 12'd2786;
            mem[25] <= 12'd756;
            mem[26] <= 12'd2865;
            mem[27] <= 12'd2099;
            mem[28] <= 12'd2393;
            mem[29] <= 12'd733;
            mem[30] <= 12'd2474;
            mem[31] <= 12'd2110;
            mem[32] <= 12'd2580;
            mem[33] <= 12'd583;
            mem[34] <= 12'd3253;
            mem[35] <= 12'd2037;
            mem[36] <= 12'd1339;
            mem[37] <= 12'd2789;
            mem[38] <= 12'd807;
            mem[39] <= 12'd403;
            mem[40] <= 12'd193;
            mem[41] <= 12'd3281;
            mem[42] <= 12'd2513;
            mem[43] <= 12'd2773;
            mem[44] <= 12'd535;
            mem[45] <= 12'd2437;
            mem[46] <= 12'd1481;
            mem[47] <= 12'd1874;
            mem[48] <= 12'd1897;
            mem[49] <= 12'd2288;
            mem[50] <= 12'd2277;
            mem[51] <= 12'd2090;
            mem[52] <= 12'd2240;
            mem[53] <= 12'd1461;
            mem[54] <= 12'd1534;
            mem[55] <= 12'd2775;
            mem[56] <= 12'd569;
            mem[57] <= 12'd3015;
            mem[58] <= 12'd1320;
            mem[59] <= 12'd2466;
            mem[60] <= 12'd1974;
            mem[61] <= 12'd268;
            mem[62] <= 12'd1227;
            mem[63] <= 12'd885;
            mem[64] <= 12'd1729;
            mem[65] <= 12'd2761;
            mem[66] <= 12'd331;
            mem[67] <= 12'd2298;
            mem[68] <= 12'd2447;
            mem[69] <= 12'd1651;
            mem[70] <= 12'd1435;
            mem[71] <= 12'd1092;
            mem[72] <= 12'd1919;
            mem[73] <= 12'd2662;
            mem[74] <= 12'd1977;
            mem[75] <= 12'd319;
            mem[76] <= 12'd2094;
            mem[77] <= 12'd2308;
            mem[78] <= 12'd2617;
            mem[79] <= 12'd1212;
            mem[80] <= 12'd630;
            mem[81] <= 12'd723;
            mem[82] <= 12'd2304;
            mem[83] <= 12'd2549;
            mem[84] <= 12'd56;
            mem[85] <= 12'd952;
            mem[86] <= 12'd2868;
            mem[87] <= 12'd2150;
            mem[88] <= 12'd3260;
            mem[89] <= 12'd2156;
            mem[90] <= 12'd33;
            mem[91] <= 12'd561;
            mem[92] <= 12'd2879;
            mem[93] <= 12'd2337;
            mem[94] <= 12'd3110;
            mem[95] <= 12'd2935;
            mem[96] <= 12'd3289;
            mem[97] <= 12'd2649;
            mem[98] <= 12'd1756;
            mem[99] <= 12'd3220;
            mem[100] <= 12'd1476;
            mem[101] <= 12'd1789;
            mem[102] <= 12'd452;
            mem[103] <= 12'd1026;
            mem[104] <= 12'd797;
            mem[105] <= 12'd233;
            mem[106] <= 12'd632;
            mem[107] <= 12'd757;
            mem[108] <= 12'd2882;
            mem[109] <= 12'd2388;
            mem[110] <= 12'd648;
            mem[111] <= 12'd1029;
            mem[112] <= 12'd848;
            mem[113] <= 12'd1100;
            mem[114] <= 12'd2055;
            mem[115] <= 12'd1645;
            mem[116] <= 12'd1333;
            mem[117] <= 12'd2687;
            mem[118] <= 12'd2402;
            mem[119] <= 12'd886;
            mem[120] <= 12'd1746;
            mem[121] <= 12'd3050;
            mem[122] <= 12'd1915;
            mem[123] <= 12'd2594;
            mem[124] <= 12'd821;
            mem[125] <= 12'd641;
            mem[126] <= 12'd910;
            mem[127] <= 12'd2154;
        end
    end


    reg[11:0] temp0,temp1,temp2,temp3;
    always@(posedge clk or negedge rst_n)
    begin
        if(!rst_n) 
        begin
            temp0 <=48'd0;
            temp1 <=48'd0;
            temp2 <=48'd0;
            temp3 <=48'd0;
            {out0, out1, out2, out3} <= 48'd0;
        end
        else begin
            temp0 <= mem[Addr_twiddle0];
            temp1 <= mem[Addr_twiddle1];
            temp2 <= mem[Addr_twiddle2];
            temp3 <= mem[Addr_twiddle3];
            {out0, out1, out2, out3} <= {temp0,temp1,temp2,temp3} ;
        end
    end

endmodule